package shujia.day05;

/*
    继承和成员方法的关系：
        方法的重写：在继承关系中，子类中的方法声明【返回值类型，方法名，参数列表】与父类中的一模一样，只是方法实现不一样，这个现象成为方法的重写
        方法的重载：在同一个类中，方法名一样，参数列表不同现象，方法的重载，与返回值无关。


    面试题：方法的重载和重写什么区别？

    注意：并不是所有的方法子类都能重写？
        1、父类中静态的方法子类无法重写。可以继承使用父亲的静态成员，不能重写。
        2、父类中的私有方法子类无法重写，私有的都无法继承，更不用想重写了。
        3、重写和权限有关系吗？ public protected 默认的 private
            子类重写的方法权限不能比父亲的还要低 可以是大于等于，推荐除特殊要求外，保持一致

 */
class Fu6{
    protected void fun1(){
        System.out.println("这是父类中的fun1方法");
    }

    public static void fun2(){
        System.out.println("这是父类中的静态的fun2方法");
    }

    private void fun3(){
        System.out.println("这是父类中的私有的fun3方法");
    }

}

class Zi6 extends Fu6{
//    public void fun1(){
//        System.out.println("这是父类中的fun1方法");
//    }

    @Override
    protected void fun1(){
        System.out.println("好好学习，天天向上！");
    }

    //无法重写
//    public static void fun2(){
//        System.out.println("数加666");
//    }
//
//    @Override
//    private void fun3(){
//        System.out.println("数加666");
//    }

    public void show1(){
        fun1();
    }

    public int show1(String n){
        return 10;
    }
}

public class ExtendsDemo5 {
    public static void main(String[] args) {
        Zi6 zi6 = new Zi6();
        zi6.show1();
        zi6.fun1();
    }
}
